Google Cloud で簡単に動画解析!Cloud Video API を解説
Cloud Video API とは
概要
Cloud Video APIとはその名の通り動画を解析する際に使用するGoogle Cloudのサービスになります。種類としては2つあり、次に紹介するAutoML Video IntelligenceとVideo Intelligence APIが存在します。
利用用途としては、動画コンテンツの自動分類、不適切なコンテンツの検出、動画内の重要なシーンの特定などが挙げられます。これらの機能により、大量の動画データを効率的に管理し、特定の情報を抽出することが可能となります。
2つの使い分けとしては、よりカスタマイズ性を持たせる場合にはAutoML Video Intelligenceを選択し、機械学習などの知見が薄くすぐに使い始めたい場合にはVideo Intelligence APIを選択するといった具合でしょうか。
ただし、Google Cloud製品におけるAutoMLと名のついたサービスは、高度なカスタマイズ性を維持しつつ、より簡単に独自の要件に合わせてモデルを調整できるという特徴を持っています。
AutoML Video Intelligence
AutoML Video Intelligenceは、Vertex AIプラットフォームの一部であり、AutoMLシリーズの中で動画解析に特化したサービスです。
特徴
主に3つの機能を提供しています
-
動作認識
- 動画内の特定の動作(例:サッカーのゴール、ゴルフのスウィング)を識別し、その発生時点を特定する
-
動画分類
- 動画全体を分析し、内容に基づいてカテゴリー(例:野球、サッカー、バスケットボール)に分類する
-
オブジェクトトラッキング
- 動画内の特定のオブジェクト(例:サッカーボール)を識別し、その動きを追跡する
これらの機能を使用することで、ユーザーは独自のニーズに合わせたカスタム動画解析モデルを簡単に作成でき、トレーニングすることができます。また各機能には、データの準備からモデルの評価、予測の取得まで、多くのドキュメントやJupyter notebookのサンプルが提供されており、効率的な開発をサポートしています。
カスタムトレーニング
より複雑なニーズや特殊な要件がある場合には、カスタムトレーニングという選択肢もあります。これは、Vertex AIプラットフォーム上で独自のモデルを作成し、それを使ってカスタムモデルをトレーニングする方法です。
カスタムトレーニングの魅力はその柔軟性にあり、好みのMLフレームワークを使用し、トレーニングに使用するコンピューティングリソースも細かくカスタマイズできます。
- VMのタイプと数を選択
- GPUの利用
- TPU(Tensor Processing Unit)の活用
- ブートディスクのタイプとサイズの指定
以上のようなオプションを利用することで、自分のプロジェクトに最適化されたトレーニング環境を構築できるわけです。
もちろん、この方法は単純にAutoMLを利用する場合と比べると、知識と労力が必要になります。ただ、その分だけ自由度が高く、独自性の高いモデルを作りたい場合には、有効な選択肢となると思います。
AutoMLかカスタムトレーニングかの選択は、プロジェクトの要件と利用可能なリソースのバランスを見ながら選定するのが望ましいと感じます。
Video Intelligence API
Google Cloudには先程紹介したAuto MLシリーズと同様に、「~ API」といった目的特化型のAPI製品が複数存在します。これらのAPIは、それぞれ個別のサービスページを持ち、詳細なドキュメントやチュートリアルが提供されています。
少し話がそれましたが、Video Intelligence APIはAutoML Video Intelligenceと同様に動画解析を行うサービスですが、事前に訓練された機械学習モデルを使用している点が大きな違いです。よって、複雑な機械学習の知識がなくても、すぐに利用できるのが嬉しい特徴です。
特徴
Video Intelligence APIの特徴としては、先ほどAutoML Video Intelligenceで述べたようなことがAPIを呼び出すだけで利用可能だという点です。(ラベル検出、顔検出と追跡、テキスト検出...etc)
ただし、AutoMLで作成したカスタムモデルほど特定のニーズに特化していませんが、幅広い用途に対応できる汎用性は持っています。
それぞれの比較
こちらのURLから表を見ると違いがわかりやすいかもしれません。端的に説明する場合には、以下のような違いがあります。
- 準備時間
- Video Intelligence API → なし
- AutoML Video Intelligence → あり
- カスタマイズ性
- Video Intelligence API → なし
- AutoML Video Intelligence → あり
- 使用シナリオ
- Video Intelligence API → 汎用的な動画解析が必要な場合
- AutoML Video Intelligence → より特化した特定のニーズがある場合
Video Intelligence APIは、迅速な導入と幅広い機能が求められる場合に適しており、AutoML Video Intelligenceはより特化した解析が必要な場合に選択するといった使い分けができます。
Google Cloud コンソールで触ってみる
今回はVideo Intelligence APIをGoogle Cloud のCloud Shellから触ってみましょう。
JSONファイルの作成
Video Intelligence APIにリクエストを送るための準備として、Cloud Storage上にあるJSON形式のリクエストファイル(request.json)を作成しています。
このファイルには、分析対象の動画のURIと、実行したい分析機能(ラベル検出)が指定されています。シェルコマンドを使用して、このJSONファイルを直接作成し保存しています。
cat > request.json <<EOF
{
"inputUri":"gs://spls/gsp154/video/train.mp4",
"features": [
"LABEL_DETECTION"
]
}
EOF
リクエストの送信
Video Intelligence APIにビデオ分析を要求します。認証情報とJSONファイルの内容を含むcurlコマンドを使用し、APIは非同期で処理を開始し、一意の操作名を即座に返します。
curl -s -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$(gcloud auth print-access-token)'' \
'https://videointelligence.googleapis.com/v1/videos:annotate' \
-d @request.json
Video Intelligence API は、リクエストを処理するための操作を作成します。結果として、操作名を含む次のような応答が表示されます。
{
"名前" : "プロジェクト/474887704060/場所/asia-east1/操作/16366331060670521152"
}
APIへの問い合わせ
先ほど開始した分析の進捗を確認します。操作名を含むcurlコマンドでAPIに問い合わせ、現在の状態や完了状況などの情報を取得します。
curl -s -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$(gcloud auth print-access-token)'' \
'https://videointelligence.googleapis.com/v1/projects/PROJECTS/locations/LOCATIONS/operations/OPERATION_NAME'
初回実行時は、処理の開始時間や最終更新時間などの基本情報が表示されます。この時点では分析はまだ完了していないため、完了フラグ(done)は設定されていません。
{
"name": "projects/425437283751/locations/asia-east1/operations/17938636079131796601",
"metadata": {
"@type": "type.googleapis.com/google.cloud.videointelligence.v1.Annota
tionProgressMetadata",
"progressMetadata": [
{
"inputUri": "gs://spls/gsp154/video/train.mp4",
"startTime": "2016-09-22T21:41:56.766091Z",
"lastUpdateTime": "2016-09-22T21:42:03.889743Z"
}
]
},
...
}
約1分後に再度実行すると、完了フラグ(done)がtrueになり、詳細な分析結果が表示されます。結果には、ビデオ内容のラベル、時間セグメント、信頼度スコアなどが含まれます。
{
"name": "projects/425437283751/locations/asia-east1/operations/17938636079131796601",
"metadata": {
"@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress",
"annotationProgress": [
{
"inputUri": "/spls/gsp154/video/train.mp4",
"progressPercent": 100,
"startTime": "2017-02-17T22:39:00.333942Z",
"updateTime": "2017-02-17T22:39:11.414399Z"
}
]
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse",
"annotationResults": [
{
"inputUri": "/spls/gsp154/video/train.mp4",
"segmentLabelAnnotations": [
{
"entity": {
"entityId": "/m/01yrx",
"languageCode": "en-US"
},
"segments": [
{
"segment": {
"startTimeOffset": "0s",
"endTimeOffset": "14.833664s"
},
"confidence": 0.98509187
}
]
},
...
以上のプロセスにより、Cloud Video Intelligence APIを使用したビデオ分析の基本的な流れを確認できます。
まとめ
本記事では、Google CloudのVideo APIについて解説しました。AutoML Video IntelligenceとVideo Intelligence APIの2種類があり、それぞれの特徴や使い分けを紹介しました。
AutoML Video Intelligenceはカスタマイズ性が高く、Video Intelligence APIは迅速な導入が可能です。選択基準として、準備時間、カスタマイズ性、使用シナリオを考慮することが重要です。
最後に、Google Cloud コンソールでVideo Intelligence APIを実際に使用し、動画分析の基本的な流れを確認しました。これらのツールを適切に活用することで、効率的な動画解析が可能となり、ビジネスになどに大きな価値をもたらすことができます。